package com.jtny.nytb.config.varible.vo;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.jtny.component.util.BeanUtils;
import com.jtny.nytb.config.varible.dto.ConfigGlobalManagementDTO;
import com.jtny.nytb.config.varible.enums.GlobalValueClassifyEnum;
import com.jtny.nytb.config.varible.enums.GlobalValueTypeEnum;
import lombok.Data;

/**
 * @author 智慧能源中心 - 伍天宇
 * @package com.jtny.nytb.config.generic.variable.vo
 * @fileName ExcelGlobalParamVO.java
 * @createTime 2023年11月11日 11:18
 * @Copyright© 2023 jtny
 * 江投能源技术研究院 版权所有
 */
@Data
@ExcelIgnoreUnannotated
public class ExcelGlobalParamVO {

//    /**
//     * 变量标识
//     */
//    @ExcelProperty("全局变量标识")
//    @ColumnWidth(30)
//    private String sign;

    /**
     * 变量名称
     */
    @ExcelProperty("全局变量名称")
    @ColumnWidth(30)
    private String name;

    /**
     * 变量分类：1-平台变量，2-企业变量
     */
    @ExcelProperty("变量分类")
    @ColumnWidth(30)
    private String classifyName;

    /**
     * 数据类型：1-普通类型，2-数字类型，3-开关，4-数据字典
     */
    @ExcelProperty("数据类型")
    @ColumnWidth(30)
    private String dataTypeName;

    /**
     * 数据字典-字典名称
     */
    @ExcelProperty("数据字典-字典名称")
    @ColumnWidth(30)
    private String dictionaryName;

    /**
     * 变量值
     */
    @ExcelProperty("变量值")
    @ColumnWidth(30)
    private String value;

//    /**
//     * 生效开始时间
//     */
//    @ExcelProperty("生效开始时间")
//    @ColumnWidth(30)
//    private Long effectiveStartTime;
//
//    /**
//     * 生效截至时间
//     */
//    @ExcelProperty("生效截至时间")
//    @ColumnWidth(30)
//    @ApiModelProperty("生效截至时间")
//    private Long effectiveEndTime;

    public ConfigGlobalManagementDTO toBuildDto() {
        ConfigGlobalManagementDTO configGlobalManagementDTO = BeanUtils.copyToObject(this, ConfigGlobalManagementDTO.class);
        configGlobalManagementDTO.setClassify(GlobalValueClassifyEnum.getClassify(this.classifyName));
        configGlobalManagementDTO.setDataType(GlobalValueTypeEnum.getEnumTypeByName(this.dataTypeName));

        DateTime now = DateUtil.date();
        configGlobalManagementDTO.setEffectiveStartTime(now.getTime());
        DateTime dateTime = DateUtil.offsetDay(now, 365);
        configGlobalManagementDTO.setEffectiveEndTime(dateTime.getTime());
        return configGlobalManagementDTO;
    }

}
